home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 2006 May
/
PCWMAY06.iso
/
Software
/
Trial
/
ConceptDraw NetDiagrammer
/
data1.cab
/
Samples__Basic
/
SimpleDrawing
/
DrawPolygon
/
DrawPolygon.cdb
next >
Wrap
Text File
|
2006-02-08
|
4KB
|
45 lines
Sub DrawPolygon()
Dim new_Polygon As Shape 'Ссылка на объект-шэйп, представляющий новый полигон.
Dim line_color as Color 'Цвет полигона.
'Очистить документ от всех находящихся в нем сейчас шэйпов.
thisDoc.ActivePage.RemoveAllShapes()
'Создаем шэйп, изображающий полигон.
'Построение шэйпа происходит между двумя функциями, объявляющими о начале
'создания шэйпа (метод BeginShape объекта Page) и о завершении его создания
'(метод EndShape объекта Page). Ссылка на строящийся объект присваивается
'переменной new_Polygon.
'Построение объекта происходит на активной странице данного документа thisDoc.ActivePage
Set new_Polygon = thisDoc.ActivePage.BeginShape()
new_Polygon.PenWeight = 28
new_Polygon.PenPattern = 1
'Получаем ссылку на объект Color, содержащий информацию о цвете линии Shap'а.
Set line_color = new_Polygon.PenColor
'Устанавливаем цвет линии объекта, используя индексное представление цвета.
'После выделения целой части выражения Rnd()* 256, значение будет являться
'целым числом в диапазоне от 0 до 255. Однако фактически Int( Rnd()* 256)
'имеет тип Double. Неявное преобразование этого выражения к целому типу при
'присваивании производится автоматически.
Randomize
line_color.Index = Int( Rnd()* 256)
'Задаем координаты начала полигона относительно страницы.
new_Polygon.MoveTo(100, 100)
'Задаем координаты конца первого отрезка. Поскольку метод LineTo вызывается для
'объекта Shape, координаты являются относительными координатами Shape. Начало
'относительной системы координат лежит в первой точке Shape, определенной первым
'вызовом MoveTo, то есть (100,100 ).
new_Polygon.LineTo(500, 500)
Do
'Cтроим новый сегмент от текущей точки, заданной при предыдущем вызове метода
'LineTo. Координаты следующей точки выбираются случайным образом.
'Все сегменты являются частью единственной геометрии. Эта связность достигается тем,
'что все операции построения происходят внутри одной пары функций BeginShape()-EndShape().
new_Polygon.LineTo(Rnd()*1900,Rnd()*2770)
'Цикл построения выполняется до тех пор, пока пользователь не нажмет кнопку Cancel в
'ответ на соответствующий вопрос.
Loop While ( MsgBox("One more segment?", cdbOKCancel) = cdbOK)
thisDoc.ActivePage.EndShape()
End Sub